package com.ruoyi.insect.utils;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Base64;
import java.util.UUID;

/**
 * 图片处理工具类
 */
public class ImageUtils {

    private static final Logger log = LoggerFactory.getLogger(ImageUtils.class);

    /**
     * 保存Base64图片到服务器
     * @param base64Data Base64图片数据
     * @param uploadPath 上传路径
     * @return 图片访问路径
     */
    public static String saveBase64Image(String base64Data, String uploadPath) {
        try {
            // 检查Base64数据是否包含前缀
            if (base64Data.contains(",")) {
                base64Data = base64Data.split(",")[1];
            }

            // 解码Base64数据
            byte[] imageBytes = Base64.getDecoder().decode(base64Data);

            // 生成文件名
            String fileName = UUID.randomUUID().toString() + ".jpg";
            String filePath = uploadPath + File.separator + fileName;

            // 确保目录存在
            File directory = new File(uploadPath);
            if (!directory.exists()) {
                directory.mkdirs();
            }

            // 保存文件
            try (FileOutputStream fos = new FileOutputStream(filePath)) {
                fos.write(imageBytes);
            }

            // 返回相对路径（根据你的项目配置调整）
            return "/profile/upload/" + fileName;

        } catch (Exception e) {
            log.error("保存Base64图片失败", e);
            return null;
        }
    }

    /**
     * 获取上传路径
     */
    public static String getUploadPath() {
        // 这里根据你的若依配置调整
        // 通常若依的上传路径在配置文件中配置
        String basePath = System.getProperty("user.dir") + "/upload";
        File directory = new File(basePath);
        if (!directory.exists()) {
            directory.mkdirs();
        }
        return basePath;
    }
}
